/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DaoExtendido;

import Logico.Competencia;
import java.util.ArrayList;
import ConectorBD.ConexionBD;
import Controladores.ControladorDisciplina;
import Controladores.ControladorEspacioDeportivo;
import Controladores.ControladorEvento;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import Dao.CompetenciaJpaController;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManagerFactory;

public class CompetenciaExtension extends CompetenciaJpaController {

    ConexionBD conexion;
    Connection con;

    public CompetenciaExtension(EntityManagerFactory emf) {

        super(emf);
        conexion = new ConexionBD();
        this.emf = emf;
    }

    public ArrayList<Competencia> buscarPorNombre(String nombre) {

        boolean flag = false;
        String consulta = "SELECT * FROM competencia WHERE nombre = " + nombre + " order by idcompetencia;";
        con = conexion.conectar();

        ArrayList<Competencia> resultado = new ArrayList<>();

        Statement stmt;
        ResultSet rs;

        try {

            stmt = con.createStatement();
            rs = stmt.executeQuery(consulta);

            while (rs.next()) {
                Competencia temp = new Competencia();

                temp.setIdcompetencia(Integer.parseInt(rs.getObject(1) + ""));
                temp.setNombre(rs.getObject(2) + "");
                temp.setDescripcion(rs.getObject(3) + "");
                SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
                String strFecha = rs.getObject(4) + "";
                Date fechaDate = null;
                try {
                    fechaDate = formato.parse(strFecha);
                } catch (ParseException ex) {
                    Logger.getLogger(CompetenciaExtension.class.getName()).log(Level.SEVERE, null, ex);
                }
                temp.setFecha(fechaDate);
                temp.setHora(rs.getObject(5) + "");
                temp.setImagenpodio(rs.getObject(6) + "");
                ControladorEspacioDeportivo controladorEspacioDeportivo = new ControladorEspacioDeportivo();
                temp.setIdespacioDeportivo((controladorEspacioDeportivo.buscar(Integer.parseInt(rs.getObject(7) + ""))));
                ControladorDisciplina controladorDisciplina = new ControladorDisciplina();
                temp.setDisciplinaIddisciplina((controladorDisciplina.buscar(Integer.parseInt(rs.getObject(8) + ""))));
                ControladorEvento controladorEvento = new ControladorEvento();
                temp.setEventoIdevento((controladorEvento.buscar(Integer.parseInt(rs.getObject(9) + ""))));
                temp.setTipoPuntaje(rs.getObject(10) + "");
                temp.setCantidadVip(Integer.parseInt(rs.getObject(11) + ""));
                temp.setCantidadPlatino(Integer.parseInt(rs.getObject(12) + ""));
                temp.setCantidadGeneral(Integer.parseInt(rs.getObject(13) + ""));
                temp.setCantidadAEliminatoria(Integer.parseInt(rs.getObject(14) + ""));


                resultado.add(temp);
                flag = true;
            }

            if (flag == false) {
                resultado.add(new Competencia());
            }

            rs.close();
            con.close();

        } catch (SQLException exp) {
            JOptionPane.showMessageDialog(null, exp.getMessage());
        }

        return resultado;

    }

    public ArrayList<Competencia> buscarPorEvento(int idevento) {

        boolean flag = false;
        String consulta = "SELECT * FROM competencia WHERE evento_idevento = " + idevento + " order by nombre;";
        //System.out.println("Consulta: "+consulta);
        con = conexion.conectar();

        ArrayList<Competencia> resultado = new ArrayList<>();

        Statement stmt;
        ResultSet rs;

        try {

            stmt = con.createStatement();
            rs = stmt.executeQuery(consulta);

            while (rs.next()) {

                Competencia temp = new Competencia();

                temp.setIdcompetencia(Integer.parseInt(rs.getObject(1) + ""));
                temp.setNombre(rs.getObject(2) + "");
                temp.setDescripcion(rs.getObject(3) + "");
                SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
                String strFecha = rs.getObject(4) + "";
                Date fechaDate = null;
                System.out.println("Fech mbkjm,n,.na: "+strFecha);
                try {
                    if (strFecha!=null) {
                        fechaDate = formato.parse(strFecha);
                    }
                } catch (ParseException ex) {
                    Logger.getLogger(CompetenciaExtension.class.getName()).log(Level.SEVERE, null, ex);
                }
                temp.setFecha(fechaDate);
                temp.setHora(rs.getObject(5) + "");
                temp.setImagenpodio(rs.getObject(6) + "");
                ControladorEspacioDeportivo controladorEspacioDeportivo = new ControladorEspacioDeportivo();
                temp.setIdespacioDeportivo((controladorEspacioDeportivo.buscar(Integer.parseInt(rs.getObject(7) + ""))));
                ControladorDisciplina controladorDisciplina = new ControladorDisciplina();
                temp.setDisciplinaIddisciplina((controladorDisciplina.buscar(Integer.parseInt(rs.getObject(8) + ""))));
                ControladorEvento controladorEvento = new ControladorEvento();
                temp.setEventoIdevento((controladorEvento.buscar(Integer.parseInt(rs.getObject(9) + ""))));
                temp.setTipoPuntaje(rs.getObject(10) + "");
                temp.setCantidadVip(Integer.parseInt(rs.getObject(11) + ""));
                temp.setCantidadPlatino(Integer.parseInt(rs.getObject(12) + ""));
                temp.setCantidadGeneral(Integer.parseInt(rs.getObject(13) + ""));
                temp.setCantidadAEliminatoria(Integer.parseInt(rs.getObject(14) + ""));


                resultado.add(temp);
                flag = true;

            }
            //System.out.println("flag: "+flag);
            rs.close();
            con.close();

        } catch (SQLException exp) {
            JOptionPane.showMessageDialog(null, exp.getMessage());
        }
        return resultado;

    }
}
